export function parseTime(time, f) {
	f = f || 'yyyy-MM-dd HH:mm:ss'

	let date
	if (typeof time === 'object') {
		date = time
	} else {
		if ((typeof time === 'string')) {
			if ((/^[0-9]+$/.test(time))) {
				time = parseInt(time)
			} else {
				time = time.replace(new RegExp(/-/gm), '/')
			}
		}

		if ((typeof time === 'number') && (time.toString().length === 10)) {
			time = time * 1000
		}
		date = new Date(time)
	}

	let formatPattern = {
		yyyy: (d) => {
			return d.getFullYear().toString()
		},
		yy: (d) => {
			return (d.getYear() % 100).toString()
		},
		MM: (d) => {
			return (d.getMonth() + 1).toString().padStart(2, '0')
		},
		M: (d) => {
			return (d.getMonth() + 1).toString()
		},
		dd: (d) => {
			return d.getDate().toString().padStart(2, '0')
		},
		d: (d) => {
			return d.getDate().toString()
		},
		HH: (d) => {
			return d.getHours().toString().padStart(2, '0')
		},
		H: (d) => {
			return d.getHours().toString()
		},
		mm: (d) => {
			return d.getMinutes().toString().padStart(2, '0')
		},
		m: (d) => {
			return d.getMinutes().toString()
		},
		ss: (d) => {
			return d.getSeconds().toString().padStart(2, '0')
		},
		s: (d) => {
			return d.getSeconds().toString()
		},
		E: (d) => {
			return ['日', '一', '二', '三', '四', '五', '六'][d.getDay()]
		},
		e: (d) => {
			return ['7', '1', '2', '3', '4', '5', '6'][d.getDay()]
		}
	}
	for (let k in formatPattern) {
		f = f.replace(k, formatPattern[k](date))
	}
	return f
}


/**
 * 小于现在30秒，显示刚刚
 * 小于1小时，显示X分钟前
 * 小于24小时，显示X小时前
 * 小于2天，显示1天前
 * 大于等于两天，默认显示X月X日X时X分
 */
export function formatTime(time, option) {
	if (('' + time).length === 10) {
		time = parseInt(time) * 1000
	} else {
		time = +time
	}
	const d = new Date(time)
	const now = Date.now()

	const diff = (now - d) / 1000

	if (diff < 30) {
		return '刚刚'
	} else if (diff < 3600) {
		// less 1 hour
		return Math.ceil(diff / 60) + '分钟前'
	} else if (diff < 3600 * 24) {
		return Math.ceil(diff / 3600) + '小时前'
	} else if (diff < 3600 * 24 * 2) {
		return '1天前'
	}
	if (option) {
		return parseTime(time, option)
	} else {
		return (
			d.getMonth() +
			1 +
			'月' +
			d.getDate() +
			'日' +
			d.getHours() +
			'时' +
			d.getMinutes() +
			'分'
		)
	}
}

export function formatSeconds(value) {
	var secondTime = parseInt(value) // 秒
	var minuteTime = 0 // 分
	var hourTime = 0 // 小时
	var dayTime = 0 // 天
	var result = ''
	if (value < 60) {
		result = secondTime + '秒'
	} else {
		if (secondTime >= 60) { // 如果秒数大于60，将秒数转换成整数
			// 获取分钟，除以60取整数，得到整数分钟
			minuteTime = parseInt(secondTime / 60)
			// 获取秒数，秒数取佘，得到整数秒数
			secondTime = parseInt(secondTime % 60)
			// 如果分钟大于60，将分钟转换成小时
			if (minuteTime >= 60) {
				// 获取小时，获取分钟除以60，得到整数小时
				hourTime = parseInt(minuteTime / 60)
				// 获取小时后取佘的分，获取分钟除以60取佘的分
				minuteTime = parseInt(minuteTime % 60)
				if (hourTime >= 24) {
					// 获取天数， 获取小时除以24，得到整数天
					dayTime = parseInt(hourTime / 24)
					// 获取小时后取余小时，获取分钟除以24取余的分；
					hourTime = parseInt(hourTime % 24)
				}
			}
		}
		if (secondTime > 0) {
			secondTime = parseInt(secondTime) >= 10 ? secondTime : '0' + secondTime
			result = '' + secondTime + '秒'
		}
		if (minuteTime > 0) {
			minuteTime = parseInt(minuteTime) >= 10 ? minuteTime : '0' + minuteTime
			result = '' + minuteTime + '分' + result
		}
		if (hourTime > 0) {
			result = '' + parseInt(hourTime) + '小时' + result
		}
		if (dayTime > 0) {
			result = '' + parseInt(dayTime) + '天' + result
		}
	}
	return result
}
